Conventional computing devices include processing units and memory which are constructed using transistors. Since conventional transistors have well-defined “on” and “off” states, they are naturally suited to performing binary digital operations. Consequently, conventional computing architectures represent and store information in binary and perform computations using binary digital logic. For ease of use, modern computing systems provide programming interfaces allowing users to write programs in numerous programming languages which make use of statements and commands that resemble more common human language and/or mathematical notation. These programming interfaces provide compilers that convert programs written in high-level languages into binary machine code that can be executed by a processing unit such as a CPU.
Computing architectures using numeric bases other than binary have been proposed. For example, proposed trinary architectures represent data using three states (e.g., ‘−1’, ‘0’, and ‘1’). Though potentially more complex to implement, trinary architectures may be more efficient that conventional binary architectures. Similarly, memory devices capable of storing more than just binary values have been proposed and realized. For instance, multilevel FLASH memory may utilize three or more states enabling the storage of trinary value or values having higher bases. Other devices such as memristors have been proposed for use as multilevel memory cells and as building blocks for trinary digital logic. Although conventional binary computing systems and proposed trinary systems are different in some ways, they share fundamental similarities. For instance, both conventional binary computing systems and proposed trinary systems allow users to write programs in high-level languages which are translated by compilers into machine code that can be directly executed by a processing unit such as a CPU. Certain advanced conventional computing systems implement code morphing technology allowing the advanced computing system to receive a program intended for a different architecture and dynamically reinterpret or recompile the code into machine code suitable to be executed by the advanced computing system.